package com.grad.webstudy.service;

import com.github.pagehelper.PageInfo;
import com.grad.webstudy.dto.CourseDto;
import com.grad.webstudy.model.Course;
import com.grad.webstudy.vo.CourseVo;

import java.util.List;

/**
 * @Description:
 * @Author: zjf
 * @Date: 2020/2/6 14:12.
 */
public interface CourseService {


    /**
     * 增加课程信息
     * @param course
     * @return
     */
    int addCourse(Course course);


    /**
     * 批量删除课程信息
     * @param ids
     * @return
     */
    boolean deleteCourses(String ids);

    /**
     * 更新课程基本信息
     * @param courseDto
     * @return
     */
    boolean updateCourseInfo(CourseDto courseDto);


    /**
     * 更改课程状态
     * @param id
     * @param status
     * @return
     */
    boolean changeCourseStatus(Integer id,Integer status);


    /**
     * 更新课程学习人数
     * @param id
     * @return
     */
    boolean updateStudyNumber(Integer id);


    /**
     * 更新课程的分数
     * @param id
     * @param score 某个人打的分数
     * @return
     */
    boolean updateScore(Integer id,Float score);


    /**
     * 根据不同状态分页查询课程信息
     * @param currPage
     * @param pageSize
     * @param status
     * @param keyword
     * @return
     */
    PageInfo queryAllByPage(int currPage,int pageSize,Integer status
                            ,Integer level,Integer typeId, String keyword);


    /**
     * 根据状态、关键字搜索课程信息，普通用户的状态传递的参数为null
     * @param currPage
     * @param pageSize
     * @param keyWord
     * @param status
     * @return
     */
    PageInfo queryCourseByKeyWordByPage(int currPage,int pageSize,String keyWord,Integer status);


    /**
     * 根据id查询课程信息
     * @param id
     * @return
     */
    CourseVo queryById(Integer id,Integer status);


    /**
     * 根据类型查询
     * @param currPage
     * @param pageSize
     * @param typeId
     * @param status
     * @return
     */
    PageInfo queryCourseByType(int currPage,int pageSize,Integer typeId,Integer status);


    /**
     * 统计课程数量
     * @return
     */
    Integer queryCourseCount();


    /**
     * 获取最新课程
     * @return
     */
    List<CourseVo> queryCourseNew();


    /**
     * 获取不同级别的课程
     * @return
     */
    List<CourseVo> queryCourseLevel(String level);


    /**
     * 获取前沿课程
     * @return
     */
    List<CourseVo> queryCourseFront();
}
